From: Carlos Garnacho Date: Fri, 26 Jan 2024 17:00:51 +0000 (+0100) Subject: keyboard: Figure out keypad visibility through purpose hints X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~281^2~1^2~81 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3f6f2f2376977be47a7cc6058794d5dc52b28e55;p=gnome-shell.git keyboard: Figure out keypad visibility through purpose hints Drop the keypad-visible KeyController signal, and figure it out through the already notified purpose hint. Part-of: --- diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index 05ea5bad6..a3629f78d 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -1406,7 +1406,6 @@ export const Keyboard = GObject.registerClass({ 'groups-changed', this._onKeyboardGroupsChanged.bind(this), 'panel-state', this._onKeyboardStateChanged.bind(this), 'purpose-changed', this._onPurposeChanged.bind(this), - 'keypad-visible', this._onKeypadVisible.bind(this), this); global.stage.connectObject('notify::key-focus', this._onKeyFocusChanged.bind(this), this); @@ -1458,25 +1457,33 @@ export const Keyboard = GObject.registerClass({ y_expand: true, }); - let groups = [groupName]; - if (groupName.includes('+')) - groups.push(groupName.replace(/\+.*/, '')); - groups.push('us'); + if (purpose === Clutter.InputContentPurpose.DIGITS || + purpose === Clutter.InputContentPurpose.NUMBER || + purpose === Clutter.InputContentPurpose.PHONE) { + this._onKeypadVisible(null, true); + } else { + let groups = [groupName]; + if (groupName.includes('+')) + groups.push(groupName.replace(/\+.*/, '')); + groups.push('us'); + + if (purpose === Clutter.InputContentPurpose.TERMINAL) + groups = groups.map(g => `${g}-extended`); + + for (const group of groups) { + try { + keyboardModel = new KeyboardModel(group); + } catch (e) { + // Ignore this error + } + } - if (purpose === Clutter.InputContentPurpose.TERMINAL) - groups = groups.map(g => `${g}-extended`); + if (!keyboardModel) + return; - for (const group of groups) { - try { - keyboardModel = new KeyboardModel(group); - } catch (e) { - // Ignore this error - } + this._onKeypadVisible(null, false); } - if (!keyboardModel) - return; - let levels = keyboardModel.getLevels(); for (let i = 0; i < levels.length; i++) { @@ -2190,20 +2197,14 @@ class KeyboardController extends Signals.EventEmitter { _onContentPurposeHintsChanged(method) { let purpose = method.content_purpose; let emojiVisible = false; - let keypadVisible = false; if (purpose === Clutter.InputContentPurpose.NORMAL || purpose === Clutter.InputContentPurpose.ALPHA || purpose === Clutter.InputContentPurpose.PASSWORD || purpose === Clutter.InputContentPurpose.TERMINAL) emojiVisible = true; - if (purpose === Clutter.InputContentPurpose.DIGITS || - purpose === Clutter.InputContentPurpose.NUMBER || - purpose === Clutter.InputContentPurpose.PHONE) - keypadVisible = true; this.emit('emoji-visible', emojiVisible); - this.emit('keypad-visible', keypadVisible); this.emit('purpose-changed', purpose); }